<?php
/**
 * Defines the editing form for the randomsamatch question type.
 *
 * @copyright &copy; 2007 Jamie Pratt
 * @author Jamie Pratt me@jamiep.org
 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
 * @package questionbank
 * @subpackage questiontypes
 */

/**
 * randomsamatch editing form definition.
 */
class question_edit_randomsamatch_form extends question_edit_form {
	/**
	 * Add question-type specific form fields.
	 *
	 * @param MoodleQuickForm $mform the form being built.
	 */
	function definition_inner(&$mform) {
		$mform->removeElement('image');

		$questionstoselect = array();
		for ($i=2; $i<=QUESTION_NUMANS; $i++){
			$questionstoselect[$i] = $i;
		}

		$mform->addElement('select', 'choose', get_string("randomsamatchnumber", "quiz"), $questionstoselect);
		$mform->setType('feedback', PARAM_RAW);

		$mform->addElement('hidden', 'fraction', 0);
	}

	function set_data($question) {
		if (empty($question->name)) {
			$question->name =  get_string("randomsamatch", "quiz");
		}

		if (empty($question->questiontext)) {
			$question->questiontext =  get_string("randomsamatchintro", "quiz");
		}
		parent::set_data($question);
	}

	function qtype() {
		return 'randomsamatch';
	}

	function validation($data, $files) {
		global $QTYPES;
		$errors = parent::validation($data, $files);
		if (isset($data->categorymoveto)) {
			list($category) = explode(',', $data['categorymoveto']);
		} else {
			list($category) = explode(',', $data['category']);
		}
		$saquestions = $QTYPES['randomsamatch']->get_sa_candidates($category);
		$numberavailable = count($saquestions);
		if ($saquestions === false){
			$a = new object();
			$a->catname = get_field('question_categories', 'name', 'id', $category);
			$errors['choose'] = get_string('nosaincategory', 'qtype_randomsamatch', $a);

		} elseif ($numberavailable < $data['choose']){
			$a = new object();
			$a->catname = get_field('question_categories', 'name', 'id', $category);
			$a->nosaquestions = $numberavailable;
			$errors['choose'] = get_string('notenoughsaincategory', 'qtype_randomsamatch', $a);
		}
		return $errors;

	}
}
?>